﻿// 902 前缀次数统计.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <memory.h>
#include <string.h>

using namespace std;
/*

http://oj.daimayuan.top/course/7/problem/538

给你 n
 个字符串 s1,s2,...,sn
 和 m
 组询问，每次询问一个字符串是 s1,s2,...,sn
 中几个字符串的前缀。

某个字符串的前缀是指从这个字符串的第一个位置开始到某个位置结束的，前若干个字符组成的子串。

输入格式
第一行一个整数 n
，代表字符串个数。

接下来 n
 行，每行一个字符串 si
。

接下来一行一个整数 m
，代表询问组数。

接下来 m
 行，每行一个字符串，表示一组询问。

输出格式
输出共 m
 行，每行一个数表示每组询问的答案。

样例输入
4
abcd
cdf
abc
bbc
2
ab
cd
样例输出
2
1
数据规模
对于所有数据，保证 1≤n,m≤50000,1≤字符串长度≤10
，字符串均由小写字母构成。
*/


int n, m, nxt[500001][26], cnt = 0;
int tot[500001];
char str[101];

int main() {
	scanf("%d",&n);
	for (int i = 1; i <= n; i++) {
		scanf("%s",str);
		int len = strlen(str);
		int now = 0;
		for (int j = 0; j < len; j++) {
			int x = str[j] - 'a';
			if (!nxt[now][x])
				nxt[now][x] = ++cnt;
			now = nxt[now][x];
			++tot[now];
		}
	}

	scanf("%d",&m);
	for (int i = 1; i <= m; i++) {
		scanf("%s",str);
		int len = strlen(str);
		int now = 0;
		bool ok = true;
		for (int j = 0; j < len && ok; j++) {
			int x = str[j] - 'a';
			if (!nxt[now][x])
				ok = false;
			else
				now = nxt[now][x];
		}
		if (!ok)
			printf("0\n");
		else
			printf("%d\n",tot[now]);
	}

}





 